package com.eastfair.home.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.eastfair.core.base.entity.Entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import static com.eastfair.core.utils.DateUtils.DEFAULT_DATE_TIME_FORMAT;
import com.eastfair.annotation.model.EchoVO;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

/**
 * <p>
 * 实体类
 * 展台验收记录明细
 * </p>
 *
 * @author linan
 * @since 2022-12-05
 */
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("hc_booth_acceptance_detail")
@ApiModel(value = "BoothAcceptanceDetail", description = "展台验收记录明细")
@AllArgsConstructor
public class BoothAcceptanceDetail extends Entity<Long> implements EchoVO {

    private static final long serialVersionUID = 1L;
    @TableField(exist = false)
    private Map<String, Object> echoMap = new HashMap<>();
    /**
     * 是否启用（应用状态）：1是；0否
     */
    @ApiModelProperty(value = "是否启用（应用状态）：1是；0否")
    @TableField(value = "is_enabled")
    @Excel(name = "是否启用（应用状态）：1是；0否")
    private Integer isEnabled;

    /**
     * 是否删除：1是；0否
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    @TableField(value = "is_deleted")
    @Excel(name = "是否删除：1是；0否")
    private Integer isDeleted;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    @TableField(value = "project_id")
    @Excel(name = "项目id")
    private Long projectId;

    /**
     * 子系统id
     */
    @ApiModelProperty(value = "子系统id")
    @TableField(value = "subsystem_id")
    @Excel(name = "子系统id")
    private Long subsystemId;

    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    @TableField(value = "tenant_id")
    @Excel(name = "租户id")
    private Long tenantId;

    /**
     * 修改人姓名
     */
    @ApiModelProperty(value = "修改人姓名")
    @Size(max = 100, message = "修改人姓名长度不能超过100")
    @TableField(value = "updated_name", condition = LIKE)
    @Excel(name = "修改人姓名")
    private String updatedName;

    /**
     * 验收记录ID
     */
    @ApiModelProperty(value = "验收记录ID")
    @TableField(value = "acceptance_record_id")
    @Excel(name = "验收记录ID")
    private Long acceptanceRecordId;

    /**
     * 监督项管理ID
     */
    @ApiModelProperty(value = "监督项管理ID")
    @TableField(value = "supervision_item_management_id")
    @Excel(name = "监督项管理ID")
    private Long supervisionItemManagementId;

    /**
     * 文本框内容
     */
    @ApiModelProperty(value = "文本框内容")
    @Size(max = 65535, message = "文本框内容长度不能超过65535")
    @TableField(value = "text_box_content", condition = LIKE)
    @Excel(name = "文本框内容")
    private String textBoxContent;

    /**
     * 选项1勾选状态：1是；0否
     */
    @ApiModelProperty(value = "选项1勾选状态：1是；0否")
    @TableField(value = "option_one_check_status")
    @Excel(name = "选项1勾选状态：1是；0否")
    private Integer optionOneCheckStatus;

    /**
     * 选项1原因
     */
    @ApiModelProperty(value = "选项1原因")
    @Size(max = 100, message = "选项1原因长度不能超过100")
    @TableField(value = "option_one_reason", condition = LIKE)
    @Excel(name = "选项1原因")
    private String optionOneReason;

    /**
     * 选项2勾选状态：1是；0否
     */
    @ApiModelProperty(value = "选项2勾选状态：1是；0否")
    @TableField(value = "option_two_check_status")
    @Excel(name = "选项2勾选状态：1是；0否")
    private Integer optionTwoCheckStatus;

    /**
     * 选项1原因
     */
    @ApiModelProperty(value = "选项1原因")
    @Size(max = 100, message = "选项1原因长度不能超过100")
    @TableField(value = "option_two_reason", condition = LIKE)
    @Excel(name = "选项1原因")
    private String optionTwoReason;

    /**
     * 选项3勾选状态：1是；0否
     */
    @ApiModelProperty(value = "选项3勾选状态：1是；0否")
    @TableField(value = "option_three_check_status")
    @Excel(name = "选项3勾选状态：1是；0否")
    private Integer optionThreeCheckStatus;

    /**
     * 选项1原因
     */
    @ApiModelProperty(value = "选项1原因")
    @Size(max = 100, message = "选项1原因长度不能超过100")
    @TableField(value = "option_three_reason", condition = LIKE)
    @Excel(name = "选项1原因")
    private String optionThreeReason;

    /**
     * 选项4勾选状态：1是；0否
     */
    @ApiModelProperty(value = "选项4勾选状态：1是；0否")
    @TableField(value = "option_four_check_status")
    @Excel(name = "选项4勾选状态：1是；0否")
    private Integer optionFourCheckStatus;

    /**
     * 选项1原因
     */
    @ApiModelProperty(value = "选项1原因")
    @Size(max = 100, message = "选项1原因长度不能超过100")
    @TableField(value = "option_four_reason", condition = LIKE)
    @Excel(name = "选项1原因")
    private String optionFourReason;

    /**
     * 选项5勾选状态：1是；0否
     */
    @ApiModelProperty(value = "选项5勾选状态：1是；0否")
    @TableField(value = "option_five_check_status")
    @Excel(name = "选项5勾选状态：1是；0否")
    private Integer optionFiveCheckStatus;

    /**
     * 选项1原因
     */
    @ApiModelProperty(value = "选项1原因")
    @Size(max = 100, message = "选项1原因长度不能超过100")
    @TableField(value = "option_five_reason", condition = LIKE)
    @Excel(name = "选项1原因")
    private String optionFiveReason;

    /**
     * 问题项id
     */
    @ApiModelProperty(value = "问题项id")
    @TableField(value = "question_id")
    @Excel(name = "问题项id")
    private Long questionId;


    @Builder
    public BoothAcceptanceDetail(Long id, Long createdBy, LocalDateTime createTime, Long updatedBy, LocalDateTime updateTime, 
                    Integer isEnabled, Integer isDeleted, Long projectId, Long subsystemId, Long tenantId, 
                    String updatedName, Long acceptanceRecordId, Long supervisionItemManagementId, String textBoxContent, Integer optionOneCheckStatus, String optionOneReason, 
                    Integer optionTwoCheckStatus, String optionTwoReason, Integer optionThreeCheckStatus, String optionThreeReason, Integer optionFourCheckStatus, String optionFourReason, 
                    Integer optionFiveCheckStatus, String optionFiveReason, Long questionId) {
        this.id = id;
        this.createdBy = createdBy;
        this.createTime = createTime;
        this.updatedBy = updatedBy;
        this.updateTime = updateTime;
        this.isEnabled = isEnabled;
        this.isDeleted = isDeleted;
        this.projectId = projectId;
        this.subsystemId = subsystemId;
        this.tenantId = tenantId;
        this.updatedName = updatedName;
        this.acceptanceRecordId = acceptanceRecordId;
        this.supervisionItemManagementId = supervisionItemManagementId;
        this.textBoxContent = textBoxContent;
        this.optionOneCheckStatus = optionOneCheckStatus;
        this.optionOneReason = optionOneReason;
        this.optionTwoCheckStatus = optionTwoCheckStatus;
        this.optionTwoReason = optionTwoReason;
        this.optionThreeCheckStatus = optionThreeCheckStatus;
        this.optionThreeReason = optionThreeReason;
        this.optionFourCheckStatus = optionFourCheckStatus;
        this.optionFourReason = optionFourReason;
        this.optionFiveCheckStatus = optionFiveCheckStatus;
        this.optionFiveReason = optionFiveReason;
        this.questionId = questionId;
    }

}
